package com.ffggffgfv.backend.service;

import com.ffggffgfv.backend.dto.PageResult;
import com.ffggffgfv.backend.dto.ProductQueryDTO;
import com.ffggffgfv.backend.entity.Product;

import java.util.List;

/**
 * 商品服务接口
 */
public interface ProductService {

    /**
     * 查询所有商品
     *
     * @return 商品列表
     */
    List<Product> findAll();

    /**
     * 分页查询商品
     *
     * @param queryDTO 查询条件
     * @return 分页结果
     */
    PageResult<Product> findByPage(ProductQueryDTO queryDTO);

    /**
     * 根据关键字搜索商品
     *
     * @param keyword 关键字
     * @param limit   返回最大数量
     * @return 匹配的商品列表
     */
    List<Product> searchByKeyword(String keyword, int limit);

    /**
     * 根据ID查询商品
     *
     * @param id 商品ID
     * @return 商品对象
     */
    Product findById(Long id);

    /**
     * 创建商品
     *
     * @param product 商品对象
     * @return 创建的商品对象
     */
    Product create(Product product);

    /**
     * 更新商品
     *
     * @param id      商品ID
     * @param product 商品对象
     * @return 更新后的商品对象
     */
    Product update(Long id, Product product);

    /**
     * 删除商品
     *
     * @param id 商品ID
     * @return 是否成功
     */
    boolean delete(Long id);

    /**
     * 更新商品状态
     *
     * @param id     商品ID
     * @param status 状态（0-下架 1-上架）
     * @return 更新后的商品对象
     */
    Product updateStatus(Long id, Integer status);

    /**
     * 根据分类ID查询商品
     *
     * @param categoryId 分类ID
     * @param pageNum    页码
     * @param pageSize   每页大小
     * @return 分页结果
     */
    PageResult<Product> findByCategoryId(Long categoryId, int pageNum, int pageSize);
}
